Type Assertion

❓질문

타입 단언이란 무엇이며 언제 사용하나요?


💡 조사하기전 내가 알고 있던 내용

타입 단언이란 as TYPE 의 키워드를 통해 타입을 단언 할수 있습니다.
타입을 단언 하게 되면 타입스크립트의 컴파일러는 단언한 타입을 기반으로 아 이건 이 타입이구나 하고 100퍼센트 확신 하게됩니다 즉 다른 타입을 넣게되면 이를 컴파일러에서는 잡을 수 없게되고 런타임에서 이 오류를 찾게 될겁니다.

타입스크립트를 처음 배웠을때 any 타입타입 단언은 사용하지말라는 말이 있습니다.

이는 타입을 고정시켜 컴파일러단계에서 에러를 캐치하지못한다면 타입스크립트를 사용할 이유가 없기 때문입니다.

그러나 이런 타입단언도 API외부 라이브러리, HTML 파싱등에서 해당하는 반환타입을 정확히 알고 있을때 사용한다면 타입스크립트가 추론이 불가능한 타입을 명시함으로써 타입에러를 해결할 수 있습니다.

하나 더 해서 그럼 이 기능이 매우 위험하다는건 알고있습니다. 이를 보안하기위해 대부분의 경우에서는
Type Narrowing을 사용합니다.

타입 네로잉이란 if문등 조건문을 추가해 이 타입이 이거일때 이렇게 진행해주세요 이 타입이 아닌경우에는 이렇게 대응해주세요등 타입을 좁혀 해당 타입일때만 로직을 동작시키는 방식입니다. 이는 타입스크립트 체크도 되고 런타임의 안정성도 보장하니 보편적인 상황에서는 더 좋은 방법이라 생각합니다.


🏫 정리한 내용

타입 단언은 컴파일러의 타입 검사를 우회하기 때문에, 실제 값이 단언한 타입과 다를 경우 런타임 에러가 발생할 수 있습니다. 따라서 타입 단언은 해당 타입을 확실히 알고 있을 때만 사용하는 것이 중요하며, 가능한 한 타입 추론과 타입 가드를 우선적으로 사용하는 것이 바람직합니다. 잘못된 사용은 타입스크립트의 장점을 훼손하며, 오히려 코드의 안정성을 해칠 수 있습니다.